{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.数据准备"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.metrics import log_loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pregnancies</th>\n",
       "      <th>Glucose</th>\n",
       "      <th>BloodPressure</th>\n",
       "      <th>SkinThickness</th>\n",
       "      <th>Insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>DiabetesPedigreeFunction</th>\n",
       "      <th>Age</th>\n",
       "      <th>Outcome</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6</td>\n",
       "      <td>148</td>\n",
       "      <td>72</td>\n",
       "      <td>35</td>\n",
       "      <td>0</td>\n",
       "      <td>33.6</td>\n",
       "      <td>0.627</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>85</td>\n",
       "      <td>66</td>\n",
       "      <td>29</td>\n",
       "      <td>0</td>\n",
       "      <td>26.6</td>\n",
       "      <td>0.351</td>\n",
       "      <td>31</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>8</td>\n",
       "      <td>183</td>\n",
       "      <td>64</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>23.3</td>\n",
       "      <td>0.672</td>\n",
       "      <td>32</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>89</td>\n",
       "      <td>66</td>\n",
       "      <td>23</td>\n",
       "      <td>94</td>\n",
       "      <td>28.1</td>\n",
       "      <td>0.167</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>137</td>\n",
       "      <td>40</td>\n",
       "      <td>35</td>\n",
       "      <td>168</td>\n",
       "      <td>43.1</td>\n",
       "      <td>2.288</td>\n",
       "      <td>33</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Pregnancies  Glucose  BloodPressure  SkinThickness  Insulin   BMI  \\\n",
       "0            6      148             72             35        0  33.6   \n",
       "1            1       85             66             29        0  26.6   \n",
       "2            8      183             64              0        0  23.3   \n",
       "3            1       89             66             23       94  28.1   \n",
       "4            0      137             40             35      168  43.1   \n",
       "\n",
       "   DiabetesPedigreeFunction  Age  Outcome  \n",
       "0                     0.627   50        1  \n",
       "1                     0.351   31        0  \n",
       "2                     0.672   32        1  \n",
       "3                     0.167   21        0  \n",
       "4                     2.288   33        1  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diabetes = pd.read_csv('diabetes.csv')\n",
    "diabetes.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = diabetes.drop(['Outcome'],axis=1)\n",
    "y = diabetes['Outcome']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.model_selection import train_test_split\n",
    "ss_X = StandardScaler()\n",
    "X = ss_X.fit_transform(X)\n",
    "\n",
    "X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=666)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.default SVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import LinearSVC\n",
    "svc = LinearSVC()\n",
    "svc.fit(X_train,y_train)\n",
    "y_predict = svc.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'metrics' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-17-405411a7cf65>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmetrics\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0maccuracy_score\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      2\u001b[0m print(\"Classification report for classifier %s:\\n%s\\n\"\n\u001b[1;32m----> 3\u001b[1;33m       % (SVC,metrics.classification_report(y_test, y_predict)))\n\u001b[0m\u001b[0;32m      4\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Confusion matrix:\\n%s\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0mmetrics\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconfusion_matrix\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_test\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_predict\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'metrics' is not defined"
     ]
    }
   ],
   "source": [
    "#这段报错没懂，请助教指导\n",
    "from sklearn.metrics import accuracy_score\n",
    "print(\"Classification report for classifier %s:\\n%s\\n\"\n",
    "      % (SVC,metrics.classification_report(y_test, y_predict)))\n",
    "print(\"Confusion matrix:\\n%s\" % metrics.confusion_matrix(y_test, y_predict))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.GridSearchCV"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=5, error_score='raise',\n",
       "       estimator=LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,\n",
       "     intercept_scaling=1, loss='squared_hinge', max_iter=1000,\n",
       "     multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,\n",
       "     verbose=0),\n",
       "       fit_params=None, iid=True, n_jobs=1,\n",
       "       param_grid={'C': array([1.e-03, 1.e-02, 1.e-01, 1.e+00, 1.e+01, 1.e+02, 1.e+03])},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n",
       "       scoring=None, verbose=0)"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Cs = np.logspace(-3,3,7)\n",
    "#penaltys = ['l1','l2']\n",
    "param_grid = dict(C=Cs)\n",
    "\n",
    "lsvc = LinearSVC()\n",
    "lsvc_grid = GridSearchCV(lsvc,param_grid,cv=5)\n",
    "lsvc_grid.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([0.        , 0.00624971, 0.00624962, 0.04375005, 0.04375014,\n",
       "        0.04375014, 0.04687514]),\n",
       " 'std_fit_time': array([0.00000000e+00, 7.65430505e-03, 7.65418839e-03, 6.25002384e-03,\n",
       "        6.25030996e-03, 6.24971391e-03, 3.23406696e-07]),\n",
       " 'mean_score_time': array([0., 0., 0., 0., 0., 0., 0.]),\n",
       " 'std_score_time': array([0., 0., 0., 0., 0., 0., 0.]),\n",
       " 'param_C': masked_array(data=[0.001, 0.01, 0.1, 1.0, 10.0, 100.0, 1000.0],\n",
       "              mask=[False, False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'C': 0.001},\n",
       "  {'C': 0.01},\n",
       "  {'C': 0.1},\n",
       "  {'C': 1.0},\n",
       "  {'C': 10.0},\n",
       "  {'C': 100.0},\n",
       "  {'C': 1000.0}],\n",
       " 'split0_test_score': array([0.75      , 0.79032258, 0.79032258, 0.79032258, 0.79032258,\n",
       "        0.75806452, 0.75      ]),\n",
       " 'split1_test_score': array([0.74796748, 0.75609756, 0.76422764, 0.76422764, 0.76422764,\n",
       "        0.7398374 , 0.72357724]),\n",
       " 'split2_test_score': array([0.73170732, 0.72357724, 0.72357724, 0.72357724, 0.72357724,\n",
       "        0.72357724, 0.68292683]),\n",
       " 'split3_test_score': array([0.73770492, 0.75409836, 0.76229508, 0.76229508, 0.76229508,\n",
       "        0.7295082 , 0.75409836]),\n",
       " 'split4_test_score': array([0.73770492, 0.74590164, 0.74590164, 0.75409836, 0.76229508,\n",
       "        0.67213115, 0.75409836]),\n",
       " 'mean_test_score': array([0.74104235, 0.75407166, 0.75732899, 0.75895765, 0.76058632,\n",
       "        0.7247557 , 0.73289902]),\n",
       " 'std_test_score': array([0.00690617, 0.02158157, 0.02210047, 0.02149199, 0.02137228,\n",
       "        0.02871682, 0.02748306]),\n",
       " 'rank_test_score': array([5, 4, 3, 2, 1, 7, 6], dtype=int32),\n",
       " 'split0_train_score': array([0.74489796, 0.76122449, 0.76122449, 0.76530612, 0.76122449,\n",
       "        0.73061224, 0.7244898 ]),\n",
       " 'split1_train_score': array([0.74745418, 0.76985743, 0.76782077, 0.76985743, 0.76782077,\n",
       "        0.72708758, 0.74338086]),\n",
       " 'split2_train_score': array([0.76782077, 0.78004073, 0.78818737, 0.78818737, 0.79022403,\n",
       "        0.75967413, 0.69653768]),\n",
       " 'split3_train_score': array([0.75609756, 0.76219512, 0.76829268, 0.76829268, 0.76829268,\n",
       "        0.73577236, 0.7398374 ]),\n",
       " 'split4_train_score': array([0.76219512, 0.76829268, 0.7703252 , 0.77235772, 0.76829268,\n",
       "        0.69918699, 0.77642276]),\n",
       " 'mean_train_score': array([0.75569312, 0.76832209, 0.7711701 , 0.77280027, 0.77117093,\n",
       "        0.73046666, 0.7361337 ]),\n",
       " 'std_train_score': array([0.00864795, 0.00674686, 0.00904117, 0.0080262 , 0.00989691,\n",
       "        0.01934468, 0.02604946])}"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lsvc_grid.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0,0.5,'accuracy')"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "test_means = lsvc_grid.cv_results_['mean_test_score']\n",
    "plt.plot(np.log10(Cs),test_means)\n",
    "plt.xlabel('log(C)')\n",
    "plt.ylabel('accuracy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.760586319218241, {'C': 10.0})"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#最佳score和最佳参数\n",
    "lsvc_grid.best_score_,lsvc_grid.best_params_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.RBF核SVM正则参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=5, error_score='raise',\n",
       "       estimator=SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,\n",
       "  decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf',\n",
       "  max_iter=-1, probability=False, random_state=None, shrinking=True,\n",
       "  tol=0.001, verbose=False),\n",
       "       fit_params=None, iid=True, n_jobs=1,\n",
       "       param_grid={'C': array([1.e-02, 1.e-01, 1.e+00, 1.e+01, 1.e+02, 1.e+03]), 'gamma': array([1.e-04, 1.e-03, 1.e-02, 1.e-01, 1.e+00])},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n",
       "       scoring=None, verbose=0)"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.svm import SVC\n",
    "C_s = np.logspace(-2,3,6)\n",
    "gammas = np.logspace(-4,0,5)\n",
    "param_svc = dict(C=C_s,gamma=gammas)\n",
    "\n",
    "svc = SVC()\n",
    "svc_grid = GridSearchCV(svc,param_svc,cv=5)\n",
    "svc_grid.fit(X_train,y_train)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\Program Files\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([0.01250062, 0.00937457, 0.00937557, 0.00937533, 0.01250043,\n",
       "        0.01250029, 0.01250024, 0.01249981, 0.00937538, 0.01562495,\n",
       "        0.0093751 , 0.00937481, 0.00937476, 0.01250033, 0.01562486,\n",
       "        0.00937467, 0.00937467, 0.0124999 , 0.0156251 , 0.02812524,\n",
       "        0.00625014, 0.0133193 , 0.01636863, 0.04999938, 0.02187524,\n",
       "        0.01562457, 0.0218749 , 0.11562519, 0.14839635, 0.01875162]),\n",
       " 'std_fit_time': array([6.25030995e-03, 7.65430505e-03, 7.65512270e-03, 7.65492801e-03,\n",
       "        6.25021464e-03, 6.25014305e-03, 6.25011926e-03, 6.24990468e-03,\n",
       "        7.65496703e-03, 1.78416128e-07, 7.65473340e-03, 7.65449972e-03,\n",
       "        7.65446079e-03, 6.25016692e-03, 2.11964710e-06, 7.65438291e-03,\n",
       "        7.65438291e-03, 6.24995242e-03, 4.42200589e-07, 6.24916554e-03,\n",
       "        7.65483066e-03, 6.84611781e-03, 3.48639621e-03, 6.25007155e-03,\n",
       "        7.65475287e-03, 8.03580262e-07, 7.65483070e-03, 2.33852758e-02,\n",
       "        2.88562627e-02, 6.25169286e-03]),\n",
       " 'mean_score_time': array([0.        , 0.00625067, 0.0031249 , 0.0031249 , 0.00312538,\n",
       "        0.        , 0.00312524, 0.0031251 , 0.00312505, 0.003125  ,\n",
       "        0.00625033, 0.00625019, 0.        , 0.00312495, 0.00937552,\n",
       "        0.0031251 , 0.        , 0.        , 0.00312514, 0.00312481,\n",
       "        0.00312486, 0.00079947, 0.00392532, 0.        , 0.        ,\n",
       "        0.        , 0.        , 0.        , 0.        , 0.        ]),\n",
       " 'std_score_time': array([0.        , 0.00765547, 0.00624981, 0.00624981, 0.00625076,\n",
       "        0.        , 0.00625048, 0.00625019, 0.0062501 , 0.00625   ,\n",
       "        0.00765506, 0.00765489, 0.        , 0.0062499 , 0.00765508,\n",
       "        0.00625019, 0.        , 0.        , 0.00625029, 0.00624962,\n",
       "        0.00624971, 0.00159893, 0.00605202, 0.        , 0.        ,\n",
       "        0.        , 0.        , 0.        , 0.        , 0.        ]),\n",
       " 'param_C': masked_array(data=[0.01, 0.01, 0.01, 0.01, 0.01, 0.1, 0.1, 0.1, 0.1, 0.1,\n",
       "                    1.0, 1.0, 1.0, 1.0, 1.0, 10.0, 10.0, 10.0, 10.0, 10.0,\n",
       "                    100.0, 100.0, 100.0, 100.0, 100.0, 1000.0, 1000.0,\n",
       "                    1000.0, 1000.0, 1000.0],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_gamma': masked_array(data=[0.0001, 0.001, 0.01, 0.1, 1.0, 0.0001, 0.001, 0.01,\n",
       "                    0.1, 1.0, 0.0001, 0.001, 0.01, 0.1, 1.0, 0.0001, 0.001,\n",
       "                    0.01, 0.1, 1.0, 0.0001, 0.001, 0.01, 0.1, 1.0, 0.0001,\n",
       "                    0.001, 0.01, 0.1, 1.0],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'C': 0.01, 'gamma': 0.0001},\n",
       "  {'C': 0.01, 'gamma': 0.001},\n",
       "  {'C': 0.01, 'gamma': 0.01},\n",
       "  {'C': 0.01, 'gamma': 0.1},\n",
       "  {'C': 0.01, 'gamma': 1.0},\n",
       "  {'C': 0.1, 'gamma': 0.0001},\n",
       "  {'C': 0.1, 'gamma': 0.001},\n",
       "  {'C': 0.1, 'gamma': 0.01},\n",
       "  {'C': 0.1, 'gamma': 0.1},\n",
       "  {'C': 0.1, 'gamma': 1.0},\n",
       "  {'C': 1.0, 'gamma': 0.0001},\n",
       "  {'C': 1.0, 'gamma': 0.001},\n",
       "  {'C': 1.0, 'gamma': 0.01},\n",
       "  {'C': 1.0, 'gamma': 0.1},\n",
       "  {'C': 1.0, 'gamma': 1.0},\n",
       "  {'C': 10.0, 'gamma': 0.0001},\n",
       "  {'C': 10.0, 'gamma': 0.001},\n",
       "  {'C': 10.0, 'gamma': 0.01},\n",
       "  {'C': 10.0, 'gamma': 0.1},\n",
       "  {'C': 10.0, 'gamma': 1.0},\n",
       "  {'C': 100.0, 'gamma': 0.0001},\n",
       "  {'C': 100.0, 'gamma': 0.001},\n",
       "  {'C': 100.0, 'gamma': 0.01},\n",
       "  {'C': 100.0, 'gamma': 0.1},\n",
       "  {'C': 100.0, 'gamma': 1.0},\n",
       "  {'C': 1000.0, 'gamma': 0.0001},\n",
       "  {'C': 1000.0, 'gamma': 0.001},\n",
       "  {'C': 1000.0, 'gamma': 0.01},\n",
       "  {'C': 1000.0, 'gamma': 0.1},\n",
       "  {'C': 1000.0, 'gamma': 1.0}],\n",
       " 'split0_test_score': array([0.63709677, 0.63709677, 0.63709677, 0.63709677, 0.63709677,\n",
       "        0.63709677, 0.63709677, 0.63709677, 0.78225806, 0.63709677,\n",
       "        0.63709677, 0.63709677, 0.77419355, 0.72580645, 0.72580645,\n",
       "        0.63709677, 0.78225806, 0.74193548, 0.71774194, 0.74193548,\n",
       "        0.78225806, 0.76612903, 0.70967742, 0.67741935, 0.74193548,\n",
       "        0.76612903, 0.74193548, 0.72580645, 0.63709677, 0.74193548]),\n",
       " 'split1_test_score': array([0.64227642, 0.64227642, 0.64227642, 0.64227642, 0.64227642,\n",
       "        0.64227642, 0.64227642, 0.64227642, 0.77235772, 0.64227642,\n",
       "        0.64227642, 0.63414634, 0.7804878 , 0.77235772, 0.7398374 ,\n",
       "        0.63414634, 0.76422764, 0.79674797, 0.76422764, 0.71544715,\n",
       "        0.76422764, 0.79674797, 0.7804878 , 0.73170732, 0.71544715,\n",
       "        0.78861789, 0.78861789, 0.78861789, 0.69918699, 0.71544715]),\n",
       " 'split2_test_score': array([0.64227642, 0.64227642, 0.64227642, 0.64227642, 0.64227642,\n",
       "        0.64227642, 0.64227642, 0.64227642, 0.71544715, 0.64227642,\n",
       "        0.64227642, 0.63414634, 0.73170732, 0.73170732, 0.69105691,\n",
       "        0.63414634, 0.73170732, 0.7398374 , 0.75609756, 0.70731707,\n",
       "        0.73170732, 0.73170732, 0.73170732, 0.68292683, 0.70731707,\n",
       "        0.72357724, 0.74796748, 0.72357724, 0.66666667, 0.70731707]),\n",
       " 'split3_test_score': array([0.63934426, 0.63934426, 0.63934426, 0.63934426, 0.63934426,\n",
       "        0.63934426, 0.63934426, 0.63934426, 0.68032787, 0.63934426,\n",
       "        0.63934426, 0.63934426, 0.77868852, 0.74590164, 0.69672131,\n",
       "        0.63934426, 0.7704918 , 0.76229508, 0.7295082 , 0.66393443,\n",
       "        0.7704918 , 0.75409836, 0.76229508, 0.74590164, 0.66393443,\n",
       "        0.72131148, 0.76229508, 0.71311475, 0.63114754, 0.66393443]),\n",
       " 'split4_test_score': array([0.63934426, 0.63934426, 0.63934426, 0.63934426, 0.63934426,\n",
       "        0.63934426, 0.63934426, 0.63934426, 0.73770492, 0.63934426,\n",
       "        0.63934426, 0.64754098, 0.76229508, 0.73770492, 0.7295082 ,\n",
       "        0.64754098, 0.75409836, 0.75409836, 0.75409836, 0.72131148,\n",
       "        0.75409836, 0.74590164, 0.73770492, 0.74590164, 0.72131148,\n",
       "        0.73770492, 0.75409836, 0.7295082 , 0.66393443, 0.72131148]),\n",
       " 'mean_test_score': array([0.64006515, 0.64006515, 0.64006515, 0.64006515, 0.64006515,\n",
       "        0.64006515, 0.64006515, 0.64006515, 0.73778502, 0.64006515,\n",
       "        0.64006515, 0.63843648, 0.76547231, 0.74267101, 0.71661238,\n",
       "        0.63843648, 0.76058632, 0.75895765, 0.74429967, 0.71009772,\n",
       "        0.76058632, 0.75895765, 0.74429967, 0.71661238, 0.71009772,\n",
       "        0.747557  , 0.75895765, 0.73615635, 0.65960912, 0.71009772]),\n",
       " 'std_test_score': array([0.00198622, 0.00198622, 0.00198622, 0.00198622, 0.00198622,\n",
       "        0.00198622, 0.00198622, 0.00198622, 0.03734706, 0.00198622,\n",
       "        0.00198622, 0.00493667, 0.01804509, 0.01628003, 0.01917331,\n",
       "        0.00493667, 0.01710081, 0.02060934, 0.01767566, 0.02569845,\n",
       "        0.01710081, 0.02199529, 0.02468152, 0.03039882, 0.02569845,\n",
       "        0.02605291, 0.01630493, 0.02681313, 0.02430629, 0.02569845]),\n",
       " 'rank_test_score': array([19, 19, 19, 19, 19, 19, 19, 19, 11, 19, 19, 29,  1, 10, 13, 29,  2,\n",
       "         4,  8, 15,  2,  4,  8, 13, 15,  7,  4, 12, 18, 15], dtype=int32),\n",
       " 'split0_train_score': array([0.64081633, 0.64081633, 0.64081633, 0.64081633, 0.64081633,\n",
       "        0.64081633, 0.64081633, 0.64081633, 0.77346939, 0.64081633,\n",
       "        0.64081633, 0.64081633, 0.76530612, 0.81632653, 0.97142857,\n",
       "        0.64285714, 0.76530612, 0.77755102, 0.8877551 , 1.        ,\n",
       "        0.76326531, 0.76326531, 0.81020408, 0.95306122, 1.        ,\n",
       "        0.75918367, 0.78367347, 0.84081633, 0.99591837, 1.        ]),\n",
       " 'split1_train_score': array([0.6395112 , 0.6395112 , 0.6395112 , 0.6395112 , 0.6395112 ,\n",
       "        0.6395112 , 0.6395112 , 0.6395112 , 0.78207739, 0.6395112 ,\n",
       "        0.6395112 , 0.64154786, 0.77393075, 0.80651731, 0.96334012,\n",
       "        0.64154786, 0.77189409, 0.77800407, 0.87983707, 1.        ,\n",
       "        0.76985743, 0.78207739, 0.80448065, 0.9389002 , 1.        ,\n",
       "        0.78207739, 0.77596741, 0.83503055, 0.99592668, 1.        ]),\n",
       " 'split2_train_score': array([0.6395112 , 0.6395112 , 0.6395112 , 0.6395112 , 0.6395112 ,\n",
       "        0.6395112 , 0.6395112 , 0.6395112 , 0.78411405, 0.6395112 ,\n",
       "        0.6395112 , 0.6395112 , 0.78818737, 0.82484725, 0.97352342,\n",
       "        0.64154786, 0.78818737, 0.79226069, 0.88391039, 1.        ,\n",
       "        0.78818737, 0.79022403, 0.82077393, 0.95519348, 1.        ,\n",
       "        0.79022403, 0.79226069, 0.84114053, 0.99185336, 1.        ]),\n",
       " 'split3_train_score': array([0.6402439 , 0.6402439 , 0.6402439 , 0.6402439 , 0.6402439 ,\n",
       "        0.6402439 , 0.6402439 , 0.6402439 , 0.75609756, 0.6402439 ,\n",
       "        0.6402439 , 0.6402439 , 0.77845528, 0.81097561, 0.95934959,\n",
       "        0.6402439 , 0.77235772, 0.7804878 , 0.86788618, 1.        ,\n",
       "        0.77235772, 0.7703252 , 0.79674797, 0.93495935, 1.        ,\n",
       "        0.77235772, 0.78252033, 0.82723577, 0.99390244, 1.        ]),\n",
       " 'split4_train_score': array([0.6402439 , 0.6402439 , 0.6402439 , 0.6402439 , 0.6402439 ,\n",
       "        0.6402439 , 0.6402439 , 0.6402439 , 0.77642276, 0.6402439 ,\n",
       "        0.6402439 , 0.63821138, 0.77642276, 0.81707317, 0.96544715,\n",
       "        0.63821138, 0.7703252 , 0.78658537, 0.87398374, 1.        ,\n",
       "        0.77439024, 0.76829268, 0.81097561, 0.94512195, 1.        ,\n",
       "        0.7703252 , 0.79471545, 0.83943089, 0.99390244, 1.        ]),\n",
       " 'mean_train_score': array([0.64006531, 0.64006531, 0.64006531, 0.64006531, 0.64006531,\n",
       "        0.64006531, 0.64006531, 0.64006531, 0.77443623, 0.64006531,\n",
       "        0.64006531, 0.64006613, 0.77646046, 0.81514797, 0.96661777,\n",
       "        0.64088163, 0.7736141 , 0.78297779, 0.87867449, 1.        ,\n",
       "        0.77361162, 0.77483692, 0.80863645, 0.94544724, 1.        ,\n",
       "        0.77483361, 0.78582747, 0.83673081, 0.99430066, 1.        ]),\n",
       " 'std_train_score': array([0.00049838, 0.00049838, 0.00049838, 0.00049838, 0.00049838,\n",
       "        0.00049838, 0.00049838, 0.00049838, 0.00993212, 0.00049838,\n",
       "        0.00049838, 0.0011435 , 0.00737997, 0.00618172, 0.00521098,\n",
       "        0.00157018, 0.00770398, 0.00564933, 0.00706561, 0.        ,\n",
       "        0.00819477, 0.00986177, 0.00792281, 0.00782211, 0.        ,\n",
       "        0.01058975, 0.00682906, 0.00522445, 0.00152101, 0.        ])}"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svc_grid.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "test_scores = svc_grid.cv_results_['mean_test_score'].reshape(len(C_s),len(gammas))\n",
    "for i,value in enumerate(gammas):\n",
    "    plt.plot(np.log(C_s),test_scores[:,i])\n",
    "\n",
    "plt.xlabel('log(C)')\n",
    "plt.ylabel('accuracy')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.7654723127035831, {'C': 1.0, 'gamma': 0.01})"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#最佳score和最佳参数\n",
    "svc_grid.best_score_,svc_grid.best_params_"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
